home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1992 June: ROMin Holiday / ADC Developer CD (1992-06) (''ROMin Holiday'')_iso / Developer Connection - 06-1992.iso / Developer Essentials / MPW Interfaces & Libraries / CIncludes / Slots.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-01-29  |  9.9 KB  |  310 lines  |  [TEXT/MPS ]

  1.  
  2. /************************************************************
  3.  
  4. Created: Sunday, September 15, 1991 at 8:45 PM
  5.  Slots.h
  6.  C Interface to the Macintosh Libraries
  7.  
  8.  
  9.   Copyright Apple Computer, Inc. 1986-1991
  10.   All rights reserved
  11.  
  12. ************************************************************/
  13.  
  14.  
  15. #ifndef __SLOTS__
  16. #define __SLOTS__
  17.  
  18. #ifndef __TYPES__
  19. #include <Types.h>
  20. #endif
  21.  
  22. #ifndef __OSEVENTS__
  23. #include <OSEvents.h>
  24. #endif
  25.  
  26. #ifndef __OSUTILS__
  27. #include <OSUtils.h>
  28. #endif
  29.  
  30. #ifndef __FILES__
  31. #include <Files.h>
  32. #endif
  33.  
  34.  
  35. enum {
  36.  
  37.  fCardIsChanged = 1,            /*Card is Changed field in StatusFlags field of sInfoArray*/
  38.  fCkForSame = 0,                /*For SearchSRT. Flag to check for SAME sResource in the table. */
  39.  fCkForNext = 1,                /*For SearchSRT. Flag to check for NEXT sResource in the table. */
  40.  fWarmStart = 2,                /*If this bit is set then warm start else cold start.*/
  41.  
  42.  stateNil = 0,                    /*State*/
  43.  stateSDMInit = 1,                /*:Slot declaration manager Init*/
  44.  statePRAMInit = 2,                /*:sPRAM record init*/
  45.  statePInit = 3,                /*:Primary init*/
  46.  stateSInit = 4,                /*:Secondary init*/
  47.  
  48. /* flags for spParamData */
  49.  fall = 0,                        /* bit 0: set=search enabled/disabled sRsrc's */
  50.  foneslot = 1,                    /*    1: set=search sRsrc's in given slot only */
  51.  fnext = 2                        /*    2: set=search for next sRsrc */
  52. };
  53.  
  54. struct SlotIntQElement {
  55.  Ptr sqLink;                    /*ptr to next element*/
  56.  short sqType;                    /*queue type ID for validity*/
  57.  short sqPrio;                    /*priority*/
  58.  ProcPtr sqAddr;                /*interrupt service routine*/
  59.  long sqParm;                    /*optional A1 parameter*/
  60. };
  61.  
  62. typedef struct SlotIntQElement SlotIntQElement;
  63. typedef SlotIntQElement *SQElemPtr;
  64.  
  65. struct SpBlock {
  66.  long spResult;                    /*FUNCTION Result*/
  67.  Ptr spsPointer;                /*structure pointer*/
  68.  long spSize;                    /*size of structure*/
  69.  long spOffsetData;                /*offset/data field used by sOffsetData*/
  70.  Ptr spIOFileName;                /*ptr to IOFile name for sDisDrvrName*/
  71.  Ptr spsExecPBlk;                /*pointer to sExec parameter block.*/
  72.  long spParamData;                /*misc parameter data (formerly spStackPtr).*/
  73.  long spMisc;                    /*misc field for SDM.*/
  74.  long spReserved;                /*reserved for future expansion*/
  75.  short spIOReserved;            /*Reserved field of Slot Resource Table*/
  76.  short spRefNum;                /*RefNum*/
  77.  short spCategory;                /*sType: Category*/
  78.  short spCType;                    /*Type*/
  79.  short spDrvrSW;                /*DrvrSW*/
  80.  short spDrvrHW;                /*DrvrHW*/
  81.  char spTBMask;                    /*type bit mask bits 0..3 mask words 0..3*/
  82.  char spSlot;                    /*slot number*/
  83.  char spID;                        /*structure ID*/
  84.  char spExtDev;                    /*ID of the external device*/
  85.  char spHwDev;                    /*Id of the hardware device.*/
  86.  char spByteLanes;                /*bytelanes from card ROM format block*/
  87.  char spFlags;                    /*standard flags*/
  88.  char spKey;                    /*Internal use only*/
  89. };
  90.  
  91. typedef struct SpBlock SpBlock;
  92. typedef SpBlock *SpBlockPtr;
  93.  
  94. struct SInfoRecord {
  95.  Ptr siDirPtr;                    /*Pointer to directory*/
  96.  short siInitStatusA;            /*initialization E*/
  97.  short siInitStatusV;            /*status returned by vendor init code*/
  98.  char siState;                    /*initialization state*/
  99.  char siCPUByteLanes;            /*0=[d0..d7] 1=[d8..d15]*/
  100.  char siTopOfROM;                /*Top of ROM= $FssFFFFx: x is TopOfROM*/
  101.  char siStatusFlags;            /*bit 0 - card is changed*/
  102.  short siTOConst;                /*Time Out C for BusErr*/
  103.  char siReserved[2];            /*reserved*/
  104.  Ptr siROMAddr;                    /* addr of top of ROM */
  105.  char siSlot;                    /* slot number */
  106.  char siPadding[3];                /* reserved */
  107. };
  108.  
  109. typedef struct SInfoRecord SInfoRecord;
  110. typedef SInfoRecord *SInfoRecPtr;
  111.  
  112. struct SDMRecord {
  113.  ProcPtr sdBEVSave;                /*Save old BusErr vector*/
  114.  ProcPtr sdBusErrProc;            /*Go here to determine if it is a BusErr*/
  115.  ProcPtr sdErrorEntry;            /*Go here if BusErrProc finds real BusErr*/
  116.  long sdReserved;                /*Reserved*/
  117. };
  118.  
  119. typedef struct SDMRecord SDMRecord;
  120.  
  121. struct FHeaderRec {
  122.  long fhDirOffset;                /*offset to directory*/
  123.  long fhLength;                    /*length of ROM*/
  124.  long fhCRC;                    /*CRC*/
  125.  char fhROMRev;                    /*revision of ROM*/
  126.  char fhFormat;                    /*format - 2*/
  127.  long fhTstPat;                    /*test pattern*/
  128.  char fhReserved;                /*reserved*/
  129.  char fhByteLanes;                /*ByteLanes*/
  130. };
  131.  
  132. typedef struct FHeaderRec FHeaderRec;
  133. typedef FHeaderRec *FHeaderRecPtr;
  134.  
  135. struct SEBlock {
  136.  unsigned char seSlot;            /*Slot number.*/
  137.  unsigned char sesRsrcId;        /*sResource Id.*/
  138.  short seStatus;                /*Status of code executed by sExec.*/
  139.  unsigned char seFlags;            /*Flags*/
  140.  unsigned char seFiller0;        /*Filler, must be SignedByte to align on odd boundry*/
  141.  unsigned char seFiller1;        /*Filler*/
  142.  unsigned char seFiller2;        /*Filler*/
  143.  long seResult;                    /*Result of sLoad.*/
  144.  long seIOFileName;                /*Pointer to IOFile name.*/
  145.  unsigned char seDevice;        /*Which device to read from.*/
  146.  unsigned char sePartition;        /*The partition.*/
  147.  unsigned char seOSType;        /*Type of OS.*/
  148.  unsigned char seReserved;        /*Reserved field.*/
  149.  unsigned char seRefNum;        /*RefNum of the driver.*/
  150.  unsigned char seNumDevices;    /* Number of devices to load.*/
  151.  unsigned char seBootState;        /*State of StartBoot code.*/
  152. };
  153.  
  154. typedef struct SEBlock SEBlock;
  155.  
  156.  
  157. #ifdef __cplusplus
  158. extern "C" {
  159. #endif
  160. /*  Principle  */
  161. #pragma parameter __D0 SReadByte(__A0)
  162. pascal OSErr SReadByte(SpBlockPtr spBlkPtr)
  163.  = {0x7000,0xA06E}; 
  164. #pragma parameter __D0 SReadWord(__A0)
  165. pascal OSErr SReadWord(SpBlockPtr spBlkPtr)
  166.  = {0x7001,0xA06E}; 
  167. #pragma parameter __D0 SReadLong(__A0)
  168. pascal OSErr SReadLong(SpBlockPtr spBlkPtr)
  169.  = {0x7002,0xA06E}; 
  170. #pragma parameter __D0 SGetCString(__A0)
  171. pascal OSErr SGetCString(SpBlockPtr spBlkPtr)
  172.  = {0x7003,0xA06E}; 
  173. #pragma parameter __D0 SGetBlock(__A0)
  174. pascal OSErr SGetBlock(SpBlockPtr spBlkPtr)
  175.  = {0x7005,0xA06E}; 
  176. #pragma parameter __D0 SFindStruct(__A0)
  177. pascal OSErr SFindStruct(SpBlockPtr spBlkPtr)
  178.  = {0x7006,0xA06E}; 
  179. #pragma parameter __D0 SReadStruct(__A0)
  180. pascal OSErr SReadStruct(SpBlockPtr spBlkPtr)
  181.  = {0x7007,0xA06E}; 
  182.  
  183. /*  Special  */
  184. #pragma parameter __D0 SReadInfo(__A0)
  185. pascal OSErr SReadInfo(SpBlockPtr spBlkPtr)
  186.  = {0x7010,0xA06E}; 
  187. #pragma parameter __D0 SReadPRAMRec(__A0)
  188. pascal OSErr SReadPRAMRec(SpBlockPtr spBlkPtr)
  189.  = {0x7011,0xA06E}; 
  190. #pragma parameter __D0 SPutPRAMRec(__A0)
  191. pascal OSErr SPutPRAMRec(SpBlockPtr spBlkPtr)
  192.  = {0x7012,0xA06E}; 
  193. #pragma parameter __D0 SReadFHeader(__A0)
  194. pascal OSErr SReadFHeader(SpBlockPtr spBlkPtr)
  195.  = {0x7013,0xA06E}; 
  196. #pragma parameter __D0 SNextSRsrc(__A0)
  197. pascal OSErr SNextSRsrc(SpBlockPtr spBlkPtr)
  198.  = {0x7014,0xA06E}; 
  199. #pragma parameter __D0 SNextTypeSRsrc(__A0)
  200. pascal OSErr SNextTypeSRsrc(SpBlockPtr spBlkPtr)
  201.  = {0x7015,0xA06E}; 
  202. #pragma parameter __D0 SRsrcInfo(__A0)
  203. pascal OSErr SRsrcInfo(SpBlockPtr spBlkPtr)
  204.  = {0x7016,0xA06E}; 
  205. #pragma parameter __D0 SCkCardStat(__A0)
  206. pascal OSErr SCkCardStat(SpBlockPtr spBlkPtr)
  207.  = {0x7018,0xA06E}; 
  208. #pragma parameter __D0 SReadDrvrName(__A0)
  209. pascal OSErr SReadDrvrName(SpBlockPtr spBlkPtr)
  210.  = {0x7019,0xA06E}; 
  211. #pragma parameter __D0 SFindDevBase(__A0)
  212. pascal OSErr SFindDevBase(SpBlockPtr spBlkPtr)
  213.  = {0x701B,0xA06E}; 
  214. #pragma parameter __D0 SFindBigDevBase(__A0)
  215. pascal OSErr SFindBigDevBase(SpBlockPtr spBlkPtr)
  216.  = {0x701C,0xA06E}; 
  217.  
  218. /*  Advanced  */
  219. #pragma parameter __D0 InitSDeclMgr(__A0)
  220. pascal OSErr InitSDeclMgr(SpBlockPtr spBlkPtr)
  221.  = {0x7020,0xA06E}; 
  222. #pragma parameter __D0 SPrimaryInit(__A0)
  223. pascal OSErr SPrimaryInit(SpBlockPtr spBlkPtr)
  224.  = {0x7021,0xA06E}; 
  225. #pragma parameter __D0 SCardChanged(__A0)
  226. pascal OSErr SCardChanged(SpBlockPtr spBlkPtr)
  227.  = {0x7022,0xA06E}; 
  228. #pragma parameter __D0 SExec(__A0)
  229. pascal OSErr SExec(SpBlockPtr spBlkPtr)
  230.  = {0x7023,0xA06E}; 
  231. #pragma parameter __D0 SOffsetData(__A0)
  232. pascal OSErr SOffsetData(SpBlockPtr spBlkPtr)
  233.  = {0x7024,0xA06E}; 
  234. #pragma parameter __D0 SInitPRAMRecs(__A0)
  235. pascal OSErr SInitPRAMRecs(SpBlockPtr spBlkPtr)
  236.  = {0x7025,0xA06E}; 
  237. #pragma parameter __D0 SReadPBSize(__A0)
  238. pascal OSErr SReadPBSize(SpBlockPtr spBlkPtr)
  239.  = {0x7026,0xA06E}; 
  240. #pragma parameter __D0 SCalcStep(__A0)
  241. pascal OSErr SCalcStep(SpBlockPtr spBlkPtr)
  242.  = {0x7028,0xA06E}; 
  243. #pragma parameter __D0 SInitSRsrcTable(__A0)
  244. pascal OSErr SInitSRsrcTable(SpBlockPtr spBlkPtr)
  245.  = {0x7029,0xA06E}; 
  246. #pragma parameter __D0 SSearchSRT(__A0)
  247. pascal OSErr SSearchSRT(SpBlockPtr spBlkPtr)
  248.  = {0x702A,0xA06E}; 
  249. #pragma parameter __D0 SUpdateSRT(__A0)
  250. pascal OSErr SUpdateSRT(SpBlockPtr spBlkPtr)
  251.  = {0x702B,0xA06E}; 
  252. #pragma parameter __D0 SCalcSPointer(__A0)
  253. pascal OSErr SCalcSPointer(SpBlockPtr spBlkPtr)
  254.  = {0x702C,0xA06E}; 
  255. #pragma parameter __D0 SGetDriver(__A0)
  256. pascal OSErr SGetDriver(SpBlockPtr spBlkPtr)
  257.  = {0x702D,0xA06E}; 
  258. #pragma parameter __D0 SPtrToSlot(__A0)
  259. pascal OSErr SPtrToSlot(SpBlockPtr spBlkPtr)
  260.  = {0x702E,0xA06E}; 
  261. #pragma parameter __D0 SFindSInfoRecPtr(__A0)
  262. pascal OSErr SFindSInfoRecPtr(SpBlockPtr spBlkPtr)
  263.  = {0x702F,0xA06E}; 
  264. #pragma parameter __D0 SFindSRsrcPtr(__A0)
  265. pascal OSErr SFindSRsrcPtr(SpBlockPtr spBlkPtr)
  266.  = {0x7030,0xA06E}; 
  267. #pragma parameter __D0 SDeleteSRTRec(__A0)
  268. pascal OSErr SDeleteSRTRec(SpBlockPtr spBlkPtr)
  269.  = {0x7031,0xA06E}; 
  270.  
  271. pascal OSErr OpenSlot(ParmBlkPtr paramBlock,Boolean async); 
  272. #pragma parameter __D0 OpenSlotSync(__A0)
  273. pascal OSErr OpenSlotSync(ParmBlkPtr paramBlock)
  274.  = 0xA200; 
  275. #pragma parameter __D0 OpenSlotAsync(__A0)
  276. pascal OSErr OpenSlotAsync(ParmBlkPtr paramBlock)
  277.  = 0xA600; 
  278.  
  279. /*  Device Manager Slot Support  */
  280. #pragma parameter __D0 SIntInstall(__A0,__D0)
  281. pascal OSErr SIntInstall(SQElemPtr sIntQElemPtr,short theSlot)
  282.  = 0xA075; 
  283. #pragma parameter __D0 SIntRemove(__A0,__D0)
  284. pascal OSErr SIntRemove(SQElemPtr sIntQElemPtr,short theSlot)
  285.  = 0xA076; 
  286.  
  287. #pragma parameter __D0 SVersion(__A0)
  288. pascal OSErr SVersion(SpBlockPtr spBlkPtr)
  289.  = {0x7008,0xA06E}; 
  290. #pragma parameter __D0 SetSRsrcState(__A0)
  291. pascal OSErr SetSRsrcState(SpBlockPtr spBlkPtr)
  292.  = {0x7009,0xA06E}; 
  293. #pragma parameter __D0 InsertSRTRec(__A0)
  294. pascal OSErr InsertSRTRec(SpBlockPtr spBlkPtr)
  295.  = {0x700A,0xA06E}; 
  296. #pragma parameter __D0 SGetSRsrc(__A0)
  297. pascal OSErr SGetSRsrc(SpBlockPtr spBlkPtr)
  298.  = {0x700B,0xA06E}; 
  299. #pragma parameter __D0 SGetTypeSRsrc(__A0)
  300. pascal OSErr SGetTypeSRsrc(SpBlockPtr spBlkPtr)
  301.  = {0x700C,0xA06E}; 
  302. #pragma parameter __D0 SGetSRsrcPtr(__A0)
  303. pascal OSErr SGetSRsrcPtr(SpBlockPtr spBlkPtr)
  304.  = {0x701D,0xA06E}; 
  305. #ifdef __cplusplus
  306. }
  307. #endif
  308.  
  309. #endif
  310.